/**
 * 作者:李杰
 * email: maillijie@gmail.com
 */
package com.javainfo.logic;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import com.javainfo.entity.Article;
import com.javainfo.entity.ArticleCategory;
import com.javainfo.entity.SubArticle;
import com.javainfo.simpledto.ArticleDto;
import com.javainfo.simpledto.SubArticleDto;
import com.javainfo.util.PropertyComparator;

public class ArticleSubArticleComponent {

	public static void setArticles(ArticleCategory articleCategory) {
		for (ArticleCategory _articleCategory : articleCategory
				.getSubCategorys()) {
			if (_articleCategory.getArticles() != null) {
				articleCategory.getArticles().addAll(
						_articleCategory.getArticles());
			}
			if (_articleCategory.getSubCategorys() != null
					&& _articleCategory.getSubCategorys().size() > 0) {
				setArticles(_articleCategory);
			}
		}
	}
	
	public static void setSubArticles(ArticleDto articleDto, Article article) {
		List<SubArticleDto> subArticleList = new ArrayList<SubArticleDto>();
		if (article.getSubArticles() != null) {
			for(SubArticle subArticle : article.getSubArticles()){
				SubArticleDto subArticleDto = new SubArticleDto();
				subArticleDto.setContent(subArticle.getContent());
				subArticleDto.setCreateTime(subArticle.getCreateTime());
				subArticleDto.setId(subArticle.getId());
				subArticleDto.setTitle(subArticle.getTitle());
				subArticleDto.setUpdateTime(subArticle.getUpdateTime());
				subArticleDto.setUserId(subArticle.getUser()==null?null:subArticle.getUser().getId());
				subArticleDto.setUserName(subArticle.getUser()==null?null:subArticle.getUser().getUserName());
				subArticleList.add(subArticleDto);
			}
		}
		Collections.sort(subArticleList, new PropertyComparator(false,
				"getCreateTime"));
		articleDto.setSubArticleList(subArticleList);
	}
	
	public static ArticleCategory getUpCategory(ArticleCategory articleCategory) {
		if (articleCategory.getUpCategory() != null) {
			return getUpCategory(articleCategory.getUpCategory());
		}
		return articleCategory;
	}
}
